

#pragma once

#include "platform/platform.h"
#include <string>

class URL;

namespace EZUtil
{

std::string strerror(int e);

std::string to_ip_port(const struct ::sockaddr_in* ss);

// e.g www.baidu.com:80 or 192.168.1.1:777
bool from_ip_port(const std::string& url, std::string& host, int& port);

std::string to_ip(const struct ::sockaddr_in* ss);

std::string dns_resolve(const std::string& addr);

ez_socket_t blocking_connect(const URL& url);

ez_socket_t nonblocking_connect(const URL& url);

ez_socket_t blocking_accept(ez_socket_t fd,struct ::sockaddr_in* addr);

void set_keepalive(ez_socket_t fd, bool on);

void set_reuse_addr(ez_socket_t fd);

void set_tcp_no_delay(ez_socket_t fd, bool on);

void set_socket_timeout(ez_socket_t fd, int sec, int msec);

ez_socket_t create_non_blockint_socket();

bool local_socket_addr(ez_socket_t fd, std::string& addr, int& port);

bool remote_socket_addr(ez_socket_t fd, std::string& addr, int& port);
}
